from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait

from common.Until import BlogDriver
#博客编辑页测试用例
class BlogEdit:
    url = ""
    driver = ""
    def __init__(self):
        self.url = "http://127.0.0.1:8080/blog_edit.html"
        self.driver = BlogDriver.driver
        self.driver.get(self.url)

    #正确发布博客测试（登录状态下）
    def EditTestByLog(self):
        self.driver.find_element(By.CSS_SELECTOR,"#title").send_keys("自动化测试用例")
        #找到编辑区域，输入关键字（编辑区域不可操作）
        #菜单栏无法定位元素
        #博客系统编辑区域默认情况下不为空，可以暂不处理
        self.driver.find_element(By.CSS_SELECTOR,"#editor > div.editormd-toolbar > div > ul > li:nth-child(19)").click()

        # 直接点击发布博客
        self.driver.find_element(By.CSS_SELECTOR,"#submit").click()
        #点击发布博客之后出现页面的跳转， 页面跳转需要加载时间，可能会出现代码执行的速度比页面渲染的速度要快，导致元素找不到，因此可以添加等待
        #添加隐式等待和显示等待都可以，任选一个

        #显示等待
        # wait = WebDriverWait(self.driver,10).until(EC.visibility_of_element_located((By.CSS_SELECTOR,"body > div.container > div.right > div:nth-child(1) > div.title")))

        #断言：第一篇博客的标题是否为给定的标题
        actual = self.driver.find_element(By.CSS_SELECTOR,"body > div.container > div.right > div:nth-child(1) > div.title").text
        assert actual == "自动化测试用例"
        #添加屏幕截图查看博客是否发布成功
        BlogDriver.getScreenShot()

    #博客编辑页测试（未登录状态下）